package com.kingschan.util.regx;

/**
 * 正则表达式验证类
 * @author kingschan
 *date:2013-6-25
 */
public class RegxUtil {

	/**
	 * 如果为null返回0.00 否则返回配置double值
	 * @param obj
	 * @return
	 */
	public static double isDouble(Object obj)
	{
		if (null==obj) {
			return 0.00;
		}else if(obj.toString().matches("[-+]?\\b[0-9]*\\.?[0-9]+(?:[eE][-+]?[0-9]+)?\\b")){
			return Double.valueOf(obj.toString());
		}else{
			return 0.00;
		}
	}
	/**
	 * 是否为一个int32
	 * "\\b\\d+\\b"
	 * @param obj
	 * @return
	 */
	public static Integer isInt32(Object obj)
	{
		if (null==obj) {
			return 0;
		}else if(obj.toString().matches("\\b\\d+\\b")){
			return Integer.valueOf(obj.toString());
		}else{
			return 0;
		}
	}
	/**
	 * 匹配yyyy-mm-dd
	 * @param str
	 * @return
	 */
	public static boolean isDate(String str){
		if(null==str)return false;
		else
		return str.matches("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))");
	}
	
	/**
	 * 匹配yyyy-mm-dd
	 * @param str
	 * @return
	 */
	public static String checkDate(String str){
		if(null==str)return "";
		else
		return str.matches("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))")==true?str:"";
	}
	/**
	 * 匹配yyyy-mm-dd 对不合法的日期字符返回null值
	 * @param str
	 * @return
	 */
	public static String checkDateStr(String str){
		if(null==str)return null;
		else if(str.trim().equals(""))return null;
		else
		return str.matches("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))")==true?str:null;
	}
	/**
	 * 是否为一个合法的email地址
	 * @param str
	 * @return
	 */
	public static boolean macheEmailAddr(String str)
	{
		if(null==str)return false;
		else
			return str.matches("^[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\\.)+[A-Z]{2,6}$");
	}

	
	
}
